ASCII -> ๋ฌธ์ž

8/19/2025

https://school.programmers.co.kr/learn/courses/30/lessons/155652

s , skip, index ์„ธ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค.
s๋Š” ์•”ํ˜ธ๋ฌธ, s์˜ ๊ฐ ๊ธ€์ž๋“ค์˜ ASCII์ฝ”๋“œ์—์„œ index๋งŒํผ ๋”ํ•œ ๋ฌธ์ž๊ฐ€ ๋ณตํ˜ธํ™”๋œ ๋ฌธ์ž๋‹ค.
๊ทธ๋Ÿฐ๋ฐ skip์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋Š” index๋งŒํผ ๋”ํ• ๋•Œ ์ œ์™ธ๋œ๋‹ค.
a(97) + 5 = f(102) ์ง€๋งŒ skip์•ˆ์— b์™€ d๊ฐ€ ์žˆ์œผ๋‹ˆ 2๋ฒˆ์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  5๊ฐœ๋ฅผ ๋”ํ•˜๋‹ˆ ์‹ค์ƒ +7์ด ๋˜๊ณ  a->h๊ฐ€ ๋œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ chatCodeAt() ๊ณผ fromCharCode() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์—ˆ๋Š”๋ฐ,
๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์˜์–ด ์†Œ๋ฌธ์ž๋Š” 97~122๋ฒ”์œ„์— ์žˆ์—ˆ๋‹ค.

function solution(s, skip, index) {
    var answer = '';
    for(let ch of s){
    	let n = ch.charCodeAt();
    	// console.log(n);
    	let i = 1;
    	let j = 0;

    	while (true){
    		let m = n+i>122? (n+i)%123+97:n+i;
    		let a = String.fromCharCode(m);
    		// console.log(a);
    		if(!skip.includes(a)){
    			j++;
    			// console.log(`${i}, ${j}, !skip.includes(${a})`);
    		}
    		if(j===index){
    			answer += a;
    			break;
    		}
    		i++;
    	}
    }
    return answer;
}

์ด๋ ‡๊ฒŒ ํ’€์—ˆ๋”๋‹ˆ 16/20 ๊ฐœ ํ†ต๊ณผ.
์ž˜๋ชป๋  ๋ถ€๋ถ„์€ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์„ ํ†ตํ•ด skip์— ์žˆ๋Š” ๋ฌธ์ž์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์— ์žˆ์„ ์ˆ˜ ๋ฐ–์— ์—†์–ด์„œ ๋‹ค์‹œ ๋ดค๋‹ค.

ํ‹€๋ฆฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ์•„๋งˆ index๊ฐ€ ์ปค์„œ %123 ํ›„์—๋„ ์ด๋ฏธ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž ๋ฒ”์œ„ 26์„ ๋„˜์€ ๊ฒฝ์šฐ์ผ๊ฒƒ.
(n+i)%123์ด 26 ์ด์ƒ์ผ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— 97์„ ๋”ํ•˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋Š” z(122)๋ฅผ ๋„˜์–ด ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜จ๋‹ค.
๊ทธ๋ž˜์„œ let m = n+i>122? ((n+i-97)%26)+97:n+i; ์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ–ˆ๊ณ  20/20 ํ†ต๊ณผ.